package io.shockah.skylark.botcontrol;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.common.base.Joiner;
import io.shockah.skylark.Bot;
import io.shockah.skylark.BotManager;
import io.shockah.skylark.commands.CommandCall;
import io.shockah.skylark.commands.CommandParseException;
import io.shockah.skylark.commands.CommandResult;
import io.shockah.skylark.commands.NamedCommand;
import io.shockah.skylark.event.GenericUserMessageEvent;
public class JoinCommand extends NamedCommand<List<String>, Map<String, Bot>> {
private final BotControlPlugin plugin;
public JoinCommand(BotControlPlugin plugin) {
super("join");
this.plugin = plugin;
}
@SuppressWarnings("unchecked")
@Override
public List<String> convertToInput(GenericUserMessageEvent e, Object input) throws CommandParseException {
if (input instanceof List<?>)
return (List<String>)input;
return super.convertToInput(e, input);
}
@Override
public List<String> parseInput(GenericUserMessageEvent e, String input) {
return Arrays.asList(input.trim().split("\\s"));
}
@Override
public CommandResult<Map<String, Bot>> call(CommandCall call, List<String> input) {
if (call.outputMedium == null)
call.outputMedium = CommandCall.Medium.Notice;
if (!plugin.permissionsPlugin.permissionGranted(call.event.getUser(), plugin, names[0]))
return CommandResult.error("Permission required.");
Map<String, Bot> result = new HashMap<>();
BotManager manager = call.event.<Bot>getBot().manager;
for (String channelName : input) {
Bot bot = manager.joinChannel(channelName);
result.put(channelName, bot);
}
String ircOutput = String.format("Joined channels: %s", Joiner.on(", ").join(result.keySet()));
return CommandResult.of(result, ircOutput);
}
}